package com.lucifer.d.security.model;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @author Lucifer
 * @create 2023 - 03 - 04 9:35
 */
@Data
@ConfigurationProperties(prefix = "lucifer.security.model")
public class SecurityConfigModel {

    /**
     * 是否开启lucifer-security（默认开启，关闭：目前仅跳过配置验证用）
     */
    private Boolean onSecurity = true;

    /**
     * 验证token对应header key（默认：Authentication）
     */
    private String tokenHead = "Authentication";

    /**
     * 是否开启特殊拦截（默认：false）（验证sign存在）
     */
    private Boolean isSign = false;

    /**
     * 特殊验证token对应header key（默认：SignVerify）
     */
    private String signHead = "SignVerify";

    /**
     * token前缀（默认：Basic ）
     */
    private String tokenPrefix = "Basic ";

    /**
     * sign前缀（默认：Sign ）
     */
    private String signPrefix = "Sign ";

    /**
     * token来源区分对应header key
     */
    private String source;

    /**
     * 验证对象载体（完整类名）
     */
    private String authMsgClass;

    /**
     * 验证对象载体
     */
    private Class authMsg;

    /**
     * 特殊验证对象载体（完整类名）
     */
    private String signMsgClass;

    /**
     * 特殊验证对象载体
     */
    private Class signMsg;

    /**
     * 直接通行token（自动截取配置前缀，key遵循tokenHead，sign过滤不加入放行调用）
     */
    private String passToken;

    /**
     * 直接通行角色id（放行调用时同为userID）
     */
    private String passRoleId = "System";

    /**
     * 直接通行角色名称（放行调用时同为userName）
     */
    private String passRoleName = "System";

    /**
     * 登录有效时间（user）（单位/天）
     */
    private Integer loginValidUser = 1;

    /**
     * 登录有效时间（sign）（单位/天）
     */
    private Integer loginValidSign = 1;

    public SecurityConfigModel() {

    }

}
